c#如何在FTP服务器上下载文件夹及子文件夹中的文件

您所在的位置:网站首页 ftp 下载 文件夹 c#如何在FTP服务器上下载文件夹及子文件夹中的文件

c#如何在FTP服务器上下载文件夹及子文件夹中的文件

#c#如何在FTP服务器上下载文件夹及子文件夹中的文件| 来源: 网络整理| 查看: 265

c#从FTP服务器上下载文件夹及子文件夹中的文件需要三个步骤。

1.单个文件的下载

/*adss表示存放到本地的路径名,ftpadss表示从FTP服务器下载的路径名*/

public void downLoad(string adss, string ftpadss)         {             //FileMode常数确定如何打开或创建文件,指定操作系统应创建新文件。             //FileMode.Create如果文件已存在,它将被改写。             FileStream outputStream = new FileStream(adss, FileMode.Create);             FtpWebRequest downRequest = (FtpWebRequest)WebRequest.Create(new Uri(ftpadss));             //设置要发送到FTP服务器的命令             downRequest.Method = WebRequestMethods.Ftp.DownloadFile;             downRequest.KeepAlive = true;             FtpWebResponse response = (FtpWebResponse)downRequest.GetResponse();             Stream ftpStream = response.GetResponseStream();             long c1 = response.ContentLength;             int bufferSize = 65536;             int readCount;             byte[] buffer = new byte[bufferSize];             readCount = ftpStream.Read(buffer, 0, bufferSize);             while (readCount > 0)             {                 outputStream.Write(buffer, 0, readCount);                 readCount = ftpStream.Read(buffer, 0, bufferSize);             }             ftpStream.Close();             outputStream.Close();             response.Close();         }

2.遍历单个文件夹下的所有文件的名称,存到一个数组中。

 public string[] getFtpList(string ftpads, string name, string type)         {             WebResponse webresp = null;             StreamReader ftpFileListReader = null;             FtpWebRequest ftpRequest = null;             try             {                 ftpRequest = (FtpWebRequest)WebRequest.Create(new Uri(ftpads + name));                 ftpRequest.Method = type;                 webresp = ftpRequest.GetResponse();                 ftpFileListReader = new StreamReader(webresp.GetResponseStream(), Encoding.UTF8);             }             catch (Exception ex)             {                 ex.ToString();             }             StringBuilder str = new StringBuilder();             string line = ftpFileListReader.ReadLine();             while (line != null)             {                 str.Append(line);                 str.Append("\n");                 line = ftpFileListReader.ReadLine();             }             ftpFileListReader.Close();             webresp.Close();             string[] ftpFileList = str.ToString().Split('\n');             return ftpFileList;         }

3.递归文件夹,获取文件夹及子文件夹中的文件

public void downFtp(string ftpads, string name, string Myads)         {             string downloadDir = Myads + name;             string ftpdir = ftpads + name;             string[] fullname = getFtpList(ftpads, name, WebRequestMethods.Ftp.ListDirectoryDetails);                                       string[] onlyname = getFtpList(ftpads, name, WebRequestMethods.Ftp.ListDirectory);                       if (!Directory.Exists(downloadDir))             {                 Directory.CreateDirectory(downloadDir);             }             foreach (string names in fullname)             {                 //判断是否具有文件夹标识                   if (names.Contains(""))                 {                     string olname = names.Split(new string[] { "" },                     StringSplitOptions.None)[1].Trim();                     downFtp(ftpdir, "//" + olname, downloadDir);                 }                 else                 {                     foreach (string onlynames in onlyname)                     {                         if (onlynames == "" || onlynames == " " || names == "")                         {                             break;                         }                         else                         {                             if (names.Contains(" " + onlynames))                             {                                 downLoad(downloadDir + "/" + onlynames, ftpads + name + "/" +                                 onlynames);

                            }                         }                     }                 }             }         }

以上三个方法是最核心的三个方法,登陆FTP服务器需要用户名和密码,因此可以在App.config中进行设置。

下面是我自己用于配置的文件的路径,大家可以做一个参照。

                                       

以上是从FTP服务器上下载文件夹及子文件夹中所有的文件,这个是我自己亲身实践通过的。如果大家有任何问题,请随时在底下评论。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3